home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / comm / term / term41source.lha / Extras / Source / term-Source.lha / ModemPanel.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-31  |  10.1 KB  |  448 lines

  1. /*
  2. **    ModemPanel.c
  3. **
  4. **    Editing panel for modem configuration
  5. **
  6. **    Copyright © 1990-1994 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_LIMIT_MACRO=1000,
  13.         GAD_USE,GAD_CANCEL,GAD_DEFAULT };
  14.  
  15. STATIC UBYTE * __saveds
  16. ShowDialRetries(struct Gadget *SomeGadget,WORD Level)
  17. {
  18.     if(Level < 0)
  19.         return(LocaleString(MSG_DIAL_RETRIES_UNLIMITED_TXT));
  20.     else
  21.     {
  22.         STATIC UBYTE __far Buffer[10];
  23.  
  24.         SPrintf(Buffer,"%ld",Level);
  25.  
  26.         return(Buffer);
  27.     }
  28. }
  29.  
  30. STATIC UBYTE * __saveds
  31. ShowHours(struct Gadget *SomeGadget,WORD Level)
  32. {
  33.     STATIC UBYTE __far Buffer[15];
  34.  
  35.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_HOURS_TXT),Level / 60,Level % 60);
  36.  
  37.     return(Buffer);
  38. }
  39.  
  40. STATIC UBYTE * __saveds
  41. ShowSeconds(struct Gadget *SomeGadget,WORD Level)
  42. {
  43.     STATIC UBYTE __far Buffer[15];
  44.  
  45.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 60,Level % 60);
  46.  
  47.     return(Buffer);
  48. }
  49.  
  50. BYTE __regargs
  51. ModemPanel(struct Configuration *Config,BYTE *Default)
  52. {
  53.     struct LayoutHandle    *Handle;
  54.     BYTE             Cancel = FALSE;
  55.  
  56.     SaveConfig(Config,PrivateConfig);
  57.  
  58.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  59.         LH_LocaleHook,    &LocaleHook,
  60.     TAG_DONE))
  61.     {
  62.         struct Window *PanelWindow;
  63.  
  64.         LT_New(Handle,
  65.             LA_Type,    VERTICAL_KIND,
  66.         TAG_DONE);
  67.         {
  68.             LT_New(Handle,
  69.                 LA_Type,    HORIZONTAL_KIND,
  70.             TAG_DONE);
  71.             {
  72.                 LT_New(Handle,
  73.                     LA_Type,    VERTICAL_KIND,
  74.                 TAG_DONE);
  75.                 {
  76.                     LT_New(Handle,
  77.                         LA_Type,    VERTICAL_KIND,
  78.                         LA_LabelID,    MSG_V36_0110,
  79.                     TAG_DONE);
  80.                     {
  81.                         LT_New(Handle,
  82.                             LA_Type,    STRING_KIND,
  83.                             LA_LabelID,    MSG_MODEMPANEL_MODEM_INIT_STRING_GAD,
  84.                             LA_STRPTR,    Config -> ModemConfig -> ModemInit,
  85.                             LA_Chars,    10,
  86.                             GTST_MaxChars,    79,
  87.                         TAG_DONE);
  88.     
  89.                         LT_New(Handle,
  90.                             LA_Type,    STRING_KIND,
  91.                             LA_LabelID,    MSG_MODEMPANEL_MODEM_EXIT_STRING_GAD,
  92.                             LA_STRPTR,    Config -> ModemConfig -> ModemExit,
  93.                             GTST_MaxChars,    79,
  94.                         TAG_DONE);
  95.     
  96.                         LT_New(Handle,
  97.                             LA_Type,    STRING_KIND,
  98.                             LA_LabelID,    MSG_MODEMPANEL_MODEM_HANGUP_STRING_GAD,
  99.                             LA_STRPTR,    Config -> ModemConfig -> ModemHangup,
  100.                             GTST_MaxChars,    79,
  101.                         TAG_DONE);
  102.     
  103.                         LT_EndGroup(Handle);
  104.                     }
  105.     
  106.                     LT_New(Handle,
  107.                         LA_Type,    VERTICAL_KIND,
  108.                         LA_LabelID,    MSG_V36_0111,
  109.                     TAG_DONE);
  110.                     {
  111.                         LT_New(Handle,
  112.                             LA_Type,    STRING_KIND,
  113.                             LA_LabelID,    MSG_MODEMPANEL_NO_CARRIER_STRING_GAD,
  114.                             LA_STRPTR,    Config -> ModemConfig -> NoCarrier,
  115.                             LA_Chars,    10,
  116.                             GTST_MaxChars,    15,
  117.                         TAG_DONE);
  118.     
  119.                         LT_New(Handle,
  120.                             LA_Type,    STRING_KIND,
  121.                             LA_LabelID,    MSG_MODEMPANEL_NO_DIALTONE_STRING_GAD,
  122.                             LA_STRPTR,    Config -> ModemConfig -> NoDialTone,
  123.                             GTST_MaxChars,    15,
  124.                         TAG_DONE);
  125.     
  126.                         LT_New(Handle,
  127.                             LA_Type,    STRING_KIND,
  128.                             LA_LabelID,    MSG_MODEMPANEL_CONNECT_STRING_GAD,
  129.                             LA_STRPTR,    Config -> ModemConfig -> Connect,
  130.                             GTST_MaxChars,    15,
  131.                         TAG_DONE);
  132.     
  133.                         LT_New(Handle,
  134.                             LA_Type,    STRING_KIND,
  135.                             LA_LabelID,    MSG_MODEMPANEL_VOICE_STRING_GAD,
  136.                             LA_STRPTR,    Config -> ModemConfig -> Voice,
  137.                             GTST_MaxChars,    15,
  138.                         TAG_DONE);
  139.     
  140.                         LT_New(Handle,
  141.                             LA_Type,    STRING_KIND,
  142.                             LA_LabelID,    MSG_MODEMPANEL_RING_STRING_GAD,
  143.                             LA_STRPTR,    Config -> ModemConfig -> Ring,
  144.                             GTST_MaxChars,    15,
  145.                         TAG_DONE);
  146.     
  147.                         LT_New(Handle,
  148.                             LA_Type,    STRING_KIND,
  149.                             LA_LabelID,    MSG_MODEMPANEL_BUSY_STRING_GAD,
  150.                             LA_STRPTR,    Config -> ModemConfig -> Busy,
  151.                             GTST_MaxChars,    15,
  152.                         TAG_DONE);
  153.     
  154.                         LT_New(Handle,
  155.                             LA_Type,    STRING_KIND,
  156.                             LA_LabelID,    MSG_MODEMPANEL_OK_STRING_GAD,
  157.                             LA_STRPTR,    Config -> ModemConfig -> Ok,
  158.                             GTST_MaxChars,    15,
  159.                         TAG_DONE);
  160.     
  161.                         LT_New(Handle,
  162.                             LA_Type,    STRING_KIND,
  163.                             LA_LabelID,    MSG_MODEMPANEL_ERROR_STRING_GAD,
  164.                             LA_STRPTR,    Config -> ModemConfig -> Error,
  165.                             GTST_MaxChars,    15,
  166.                         TAG_DONE);
  167.     
  168.                         LT_EndGroup(Handle);
  169.                     }
  170.     
  171.                     LT_EndGroup(Handle);
  172.                 }
  173.  
  174.                 LT_New(Handle,
  175.                     LA_Type,    VERTICAL_KIND,
  176.                 TAG_DONE);
  177.                 {
  178.                     LT_New(Handle,
  179.                         LA_Type,    VERTICAL_KIND,
  180.                         LA_LabelID,    MSG_V36_0112,
  181.                     TAG_DONE);
  182.                     {
  183.                         LT_New(Handle,
  184.                             LA_Type,    STRING_KIND,
  185.                             LA_LabelID,    MSG_MODEMPANEL_DIAL_PREFIX_GAD,
  186.                             LA_STRPTR,    Config -> ModemConfig -> DialPrefix,
  187.                             LA_Chars,    10,
  188.                             GTST_MaxChars,    79,
  189.                         TAG_DONE);
  190.  
  191.                         LT_New(Handle,
  192.                             LA_Type,    STRING_KIND,
  193.                             LA_LabelID,    MSG_MODEMPANEL_DIAL_SUFFIX_GAD,
  194.                             LA_STRPTR,    Config -> ModemConfig -> DialSuffix,
  195.                             GTST_MaxChars,    79,
  196.                         TAG_DONE);
  197.  
  198.                         LT_New(Handle,
  199.                             LA_Type,        SLIDER_KIND,
  200.                             LA_LabelID,        MSG_MODEMPANEL_REDIAL_DELAY_GAD,
  201.                             LA_LONG,        &Config -> ModemConfig -> RedialDelay,
  202.                             GTSL_Min,        0,
  203.                             GTSL_Max,        60 * 60,
  204.                             GTSL_DispFunc,        ShowSeconds,
  205.                             GTSL_LevelFormat,    "%s",
  206.                         TAG_DONE);
  207.  
  208.                         LT_New(Handle,
  209.                             LA_Type,        SLIDER_KIND,
  210.                             LA_LabelID,        MSG_MODEMPANEL_DIAL_RETRIES_GAD,
  211.                             LA_LONG,        &Config -> ModemConfig -> DialRetries,
  212.                             GTSL_DispFunc,        ShowDialRetries,
  213.                             GTSL_Min,        -1,
  214.                             GTSL_Max,        1000,
  215.                             GTSL_LevelFormat,    "%s",
  216.                         TAG_DONE);
  217.  
  218.                         LT_New(Handle,
  219.                             LA_Type,        SLIDER_KIND,
  220.                             LA_LabelID,        MSG_MODEMPANEL_DIAL_TIMEOUT_GAD,
  221.                             LA_LONG,        &Config -> ModemConfig -> DialTimeout,
  222.                             GTSL_Min,        0,
  223.                             GTSL_Max,        1800,
  224.                             GTSL_DispFunc,        ShowSeconds,
  225.                             GTSL_LevelFormat,    "%s",
  226.                         TAG_DONE);
  227.  
  228.                         LT_New(Handle,
  229.                             LA_Type,        CHECKBOX_KIND,
  230.                             LA_LabelID,        MSG_MODEMPANEL_REDIAL_AFTER_HANGUP_GAD,
  231.                             LA_BYTE,        &Config -> ModemConfig -> RedialAfterHangup,
  232.                         TAG_DONE);
  233.  
  234.                         LT_EndGroup(Handle);
  235.                     }
  236.  
  237.                     LT_New(Handle,
  238.                         LA_Type,    VERTICAL_KIND,
  239.                         LA_LabelID,    MSG_V36_0116,
  240.                     TAG_DONE);
  241.                     {
  242.                         LT_New(Handle,
  243.                             LA_Type,        CHECKBOX_KIND,
  244.                             LA_LabelID,        MSG_MODEMPANEL_CONNECT_AUTO_BAUD_GAD,
  245.                             LA_BYTE,        &Config -> ModemConfig -> ConnectAutoBaud,
  246.                         TAG_DONE);
  247.  
  248.                         LT_New(Handle,
  249.                             LA_Type,        CHECKBOX_KIND,
  250.                             LA_LabelID,        MSG_MODEMPANEL_DROP_DTR_ON_HANGUP_GAD,
  251.                             LA_BYTE,        &Config -> ModemConfig -> DropDTR,
  252.                         TAG_DONE);
  253.  
  254.                         LT_New(Handle,
  255.                             LA_Type,        CHECKBOX_KIND,
  256.                             LA_LabelID,        MSG_MODEMPANEL_NOCARRIER_IS_BUSY_GAD,
  257.                             LA_BYTE,        &Config -> ModemConfig -> NoCarrierIsBusy,
  258.                         TAG_DONE);
  259.  
  260.                         LT_New(Handle,
  261.                             LA_Type,        CHECKBOX_KIND,
  262.                             LA_LabelID,        MSG_MODEMPANEL_ABORT_HANGS_UP_TXT,
  263.                             LA_BYTE,        &Config -> ModemConfig -> AbortHangsUp,
  264.                         TAG_DONE);
  265.  
  266.                         LT_New(Handle,
  267.                             LA_Type,        SLIDER_KIND,
  268.                             LA_LabelID,        MSG_MODEMPANEL_TIME_TO_CONNECT_GAD,
  269.                             LA_LONG,        &Config -> ModemConfig -> TimeToConnect,
  270.                             LA_Chars,        6,
  271.                             GTSL_Min,        0,
  272.                             GTSL_Max,        60 * 60,
  273.                             GTSL_DispFunc,        ShowSeconds,
  274.                             GTSL_LevelFormat,    "%s",
  275.                         TAG_DONE);
  276.  
  277.                         LT_EndGroup(Handle);
  278.                     }
  279.  
  280.                     LT_New(Handle,
  281.                         LA_Type,    VERTICAL_KIND,
  282.                         LA_LabelID,    MSG_V36_0118,
  283.                     TAG_DONE);
  284.                     {
  285.                         LT_New(Handle,
  286.                             LA_Type,        SLIDER_KIND,
  287.                             LA_LabelID,        MSG_MODEMPANEL_CONNECTION_LIMIT_GAD,
  288.                             LA_WORD,        &Config -> ModemConfig -> ConnectLimit,
  289.                             GTSL_Min,        0,
  290.                             GTSL_Max,        1440,
  291.                             GTSL_DispFunc,        ShowHours,
  292.                             GTSL_LevelFormat,    "%s",
  293.                         TAG_DONE);
  294.  
  295.                         LT_New(Handle,
  296.                             LA_Type,        STRING_KIND,
  297.                             LA_LabelID,        MSG_MODEMPANEL_LIMIT_MACRO_GAD,
  298.                             LA_STRPTR,        Config -> ModemConfig -> ConnectLimitMacro,
  299.                             LA_Chars,        10,
  300.                             LA_ID,            GAD_LIMIT_MACRO,
  301.                             GTST_MaxChars,        MAX_FILENAME_LENGTH - 1,
  302.                         TAG_DONE);
  303.  
  304.                         LT_EndGroup(Handle);
  305.                     }
  306.  
  307.                     LT_EndGroup(Handle);
  308.                 }
  309.  
  310.                 LT_EndGroup(Handle);
  311.             }
  312.  
  313.             LT_New(Handle,
  314.                 LA_Type,    VERTICAL_KIND,
  315.             TAG_DONE);
  316.             {
  317.                 LT_New(Handle,LA_Type,XBAR_KIND,LAXB_FullSize,TRUE,TAG_DONE);
  318.  
  319.                 LT_EndGroup(Handle);
  320.             }
  321.  
  322.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  323.                 LAGR_SameSize,    TRUE,
  324.                 LAGR_Spread,    TRUE,
  325.             TAG_DONE);
  326.             {
  327.                 LT_New(Handle,
  328.                     LA_Type,    BUTTON_KIND,
  329.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  330.                     LA_ID,        GAD_USE,
  331.                     LABT_ReturnKey,    TRUE,
  332.                     LABT_ExtraFat,    TRUE,
  333.                 TAG_DONE);
  334.  
  335.                 if(Default)
  336.                 {
  337.                     LT_New(Handle,
  338.                         LA_Type,    BUTTON_KIND,
  339.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  340.                         LA_ID,        GAD_DEFAULT,
  341.                         LABT_ExtraFat,    TRUE,
  342.                     TAG_DONE);
  343.                 }
  344.  
  345.                 LT_New(Handle,
  346.                     LA_Type,    BUTTON_KIND,
  347.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  348.                     LA_ID,        GAD_CANCEL,
  349.                     LABT_EscKey,    TRUE,
  350.                     LABT_ExtraFat,    TRUE,
  351.                 TAG_DONE);
  352.  
  353.                 LT_EndGroup(Handle);
  354.             }
  355.  
  356.             LT_EndGroup(Handle);
  357.         }
  358.  
  359.         if(PanelWindow = LT_Layout(Handle,LocaleString(MSG_MODEMPANEL_MODEM_PREFERENCES_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  360.             LAWN_HelpHook,        &GuideHook,
  361.             LAWN_Parent,        Window,
  362.             WA_DepthGadget,        TRUE,
  363.             WA_CloseGadget,        TRUE,
  364.             WA_DragBar,        TRUE,
  365.             WA_RMBTrap,        TRUE,
  366.             WA_Activate,        TRUE,
  367.         TAG_DONE))
  368.         {
  369.             struct IntuiMessage    *Message;
  370.             BOOLEAN             Done = FALSE;
  371.             ULONG             MsgClass,
  372.                          MsgQualifier;
  373.             UWORD             MsgCode;
  374.             struct Gadget        *MsgGadget;
  375.  
  376.             GuideContext(CONTEXT_MODEM);
  377.  
  378.             PushWindow(PanelWindow);
  379.  
  380.             LT_ShowWindow(Handle,TRUE);
  381.  
  382.             do
  383.             {
  384.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  385.                 {
  386.                     SaveConfig(PrivateConfig,Config);
  387.  
  388.                     break;
  389.                 }
  390.  
  391.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort))
  392.                 {
  393.                     MsgClass    = Message -> Class;
  394.                     MsgQualifier    = Message -> Qualifier;
  395.                     MsgCode        = Message -> Code;
  396.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  397.  
  398.                     GT_ReplyIMsg(Message);
  399.  
  400.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  401.  
  402.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  403.                     {
  404.                         SaveConfig(PrivateConfig,Config);
  405.  
  406.                         Done = TRUE;
  407.                     }
  408.  
  409.                     if(MsgClass == IDCMP_GADGETUP)
  410.                     {
  411.                         switch(MsgGadget -> GadgetID)
  412.                         {
  413.                             case GAD_USE:
  414.  
  415.                                 Done = TRUE;
  416.                                 break;
  417.  
  418.                             case GAD_CANCEL:
  419.  
  420.                                 SaveConfig(PrivateConfig,Config);
  421.  
  422.                                 Cancel = Done = TRUE;
  423.                                 break;
  424.  
  425.                             case GAD_DEFAULT:
  426.  
  427.                                 *Default = TRUE;
  428.  
  429.                                 Done = TRUE;
  430.                                 break;
  431.                         }
  432.                     }
  433.                 }
  434.             }
  435.             while(!Done);
  436.  
  437.             PopWindow();
  438.         }
  439.  
  440.         LT_DeleteHandle(Handle);
  441.     }
  442.  
  443.     if(Default)
  444.         return((BYTE)(!Cancel));
  445.     else
  446.         return((BYTE)memcmp(PrivateConfig -> ModemConfig,Config -> ModemConfig,sizeof(struct ModemSettings)));
  447. }
  448.